package com.tedu.api.io;

import com.sun.org.apache.bcel.internal.generic.NEW;
import org.junit.Test;

import java.io.File;
import java.io.FileFilter;

/**
 * ListFiles   返回值：数组----File【】   直接遍历文件，文件夹
 *遍历文件或者文件夹的同时，过滤遍历出来的文件，文件夹
 *需求：获取"API"项目下，名字开头以s名称
 * listFiles(FileFilter接口)   返回值：数组----File[]
 * Filter过滤器接口：过滤遍历出来的文件。文件夹
 */
public class FilterAPI {
    public static void main(String[] args) {
        //获取"获取API"项目下：File构造器传入
        File file=new File(".");
        //④创建过滤器实现类
        MyFilter myFilter=new MyFilter();
        //获取API 项目下的所有文件夹 并且必须是以s开头
        File[] subs=file.listFiles();//传入过滤器接口对象 ①自己实现类：MyFilter
        //⑤遍历数组
        for (int i = 0; i<subs.length;i++){ //5.1数组下标
            //5.2数组名[下标]
            System.out.println("过滤后的文件夹"+subs[i]);
        }
    }
}
//①自己实现类：MyFilter  实现 FileFilter接口：重写所有方法
class MyFilter implements FileFilter{
   //②accept方法：获取到File的信息，【逻辑判断】条件满足：返回值true
    public boolean accept(File pathname) {
        //③逻辑：判断获取的文件夹名字是“s”开头
        //3.1获取到过滤器传给我们的pathname【File】
        String name= pathname.getName();
        //3.2打印获取到的【File】的名称
        System.out.println("获取的名称是："+name);
        //3.3 判断名字是以"s" 开头 文件夹
        //String字符串提供方法
        //返回值boolean startWith("s") 获取字符串字符 返回：true
        return name.startsWith("s");
    }
}






